# 1、整理类的笔记到小红书
# 2、定义一个学生Student类。有下面的类属性：
# 1 姓名 name
# 2 年龄 age
# 3 成绩 score（语文，数学，英语) [每课成绩的类型为整数]
# class Student():
#     def __init__(self,name:str,age:int,score:list):
#         self.name = name
#         self.age = age
#         self.score = score
#     def get_name(self) -> str:
#         return str(self.name)
#     def get_age(self) -> int:
#         return int(self.age)
#     def get_score(self) ->list:
#         return max(self.score)
#
#     def get_course(self):
#         return max(self.score)
# #
# student =Student('马保国',75,[60,33,10])
# print(student.get_name())
# print(student.get_age())
# print(student.get_course())

# 类方法：
# 1 获取学生的姓名：get_name() 返回类型:str
# 2 获取学生的年龄：get_age() 返回类型:int
# 3 返回3门科目中最高的分数。get_course() 返回类型:int
# 4 将每个实例学生对象写进txt文件里，要持久保存
# 举例：{"姓名":"a","年龄":29,"成绩":{"语文":99,"数学":100,"英语":85}
# 5 获取所有学生的信息

# 写好类以后，可以定义2个同学测试下:
# zm = Student('zhangming',20,[69,88,100])
# 返回结果：
# zhangming
# 20

# 3、定义一个字典类：dictclass。完成下面的功能：
# dict = dictclass({你需要操作的字典对象})
# 1 删除某个key
# del_dict(key)
# 2 判断某个键是否在字典里，如果在返回键对应的值，不存在则返回"not found"
# get_dict(key)
# 3 返回键组成的列表：返回类型;(list)
# get_key()
# 4 合并字典，并且返回合并后字典的values组成的列表。返回类型:(list)
# update_dict({要合并的字典})
# 100
# class dictclass():
#     def __init__(self):

# 4、定义一个列表的操作类：Listinfo
# 包括的方法:
# 1 列表元素添加: add_key(keyname) [keyname:字符串或者整数类型]
# 2 列表元素取值：get_key(num) [num:整数类型]
# 3 列表合并：update_list(list) [list:列表类型]
# 4 删除并且返回最后一个元素：del_key()
# a = Listinfo([44,222,111,333,454,'sss','333'])
# class Listinfo():
#     def __init__(self,list1):
#         self.list1 = list1
#     def add_key(self,keyname):
#         self.keyname = keyname
#         self.list1.append(self.keyname)
#         # print('ok')
#         # print(self.list1)
#     def get_key(self,num):
#         self.num = num
#         if type(self.num) == int:
#             return self.num
#         else:
#             return '数据错误'
#     def update_list(self,list2):
#         self.list1.extend(list2)
#     def del_key(self):
#         return list1.pop[-1]
#
# a = Listinfo([44,222,111,333,454,'sss','333'])
# a.add_key('456')
# print(a.list1)
# a.get_key([2])
# print(a.get_key([2]))
# value = a.get_key(3)
# print(value)
# a.update_list([1, 2, 3])
# print(a.list1)
# print(a.del_key())
# 5、做一个学生点名系统，系统里支持：存入学生、更改学生、删除学生、点到学生姓名方法
#
# 存入学生（姓名、年龄、家庭地址、手机号）： 存入成功后，提示xxx存入成功
# 更改学生（姓名、年龄、家庭地址、手机号）：可以修改学生内容的任意一个字段
# 删除学生：删除的学生将不在展示
# 展示全部学生：可以看到全部的学生姓名
# 学生姓名：随机抽取任意一个存在的学生信息，然后打印：到！。举例： 刘闯到！
#
# class Dictclass():
#     def __init__(self, dict1):
#         self.dict1 = dict1
#
#     def del_dict(self, key):
#         del self.dict1[key]
#         return self.dict1
#
#     def get_dict(self, key):
#         if key in self.dict1.keys():
#             return self.dict1[key]
#         else:
#             return 'not found'
#
#     def get_key(self):
#         list_ = self.dict1.keys()
#         list_ = list(list_)
#         print(type(list_))
#         return list_
#
#     def update_dict(self, dict2):
#         self.dict1.update(dict2)
#         return self.dict1
#
#
# new_dict = Dictclass({'姓名': 'dfs', '年龄': '75'})


# print(new_dict.del_dict('姓名'))
# print(new_dict.get_dict('年龄'))
# print(new_dict.get_key())
# print(new_dict.update_dict({'地址': '沈阳'}))
# print(new_dict.update_dict({'性别': '男'}))
# 6、点餐管理系统
# 1》、餐馆可以新增菜品、下架菜品、修改菜品
# 2》、每个菜品，都有对应的库存，所有菜品的库存均为999，每出一道菜，库存-1
# 菜品有对应的价格，餐厅老板定义价格每道菜不允许超过15元，没有小数单位，均为整数
# 3》、餐馆后台有点赞系统，能够收集客户对菜品的喜好，0~5分
# 4》、有菜品评分提报功能，对平均分数（菜品总分/打分人数）低于3分的菜品进行强制下架；


# 7、定义一个桌子类（Desk），包含长（length）、宽（width）、高（height）属性，包含一个打印桌子信息属性的方法（showInfo）。实例化2个桌子对象，
# 为其赋予不同的属性值，并调用showInfo方法，输出每个桌子的信息。
# class desk():
#     def __init__(self,length,width,height):
#         self.length = length
#         self.width = width
#         self.height = height
#     def showInfo(self):
#         print(f'桌长{self.length}')
#         print(f'桌宽{self.width}')
#         print(f'桌高{self.height}')
#
# zhuo = desk(100,90,60)
# print(zhuo.showInfo())



# 8、定义一个用户类(User),用户名(username)和密码(password)是这个类的属性。
# class User():
#     def __init__(self,username,password):
#         self.username = username
#         self.password = password
# users = User('username','password')
# print(users.username,users.password)


# 9、定义一个计算器类，有加减乘除四个方法
# class calculator():
#     # def __init__(self,plus,minus,multiply,divide):
#     #     self.plus = plus
#     #     self.minus = minus
#     #     self.multiply = multiply
#     #     self.divide = divide
#     def plus(self,num1,num2):
#         return num1 + num2
#     def minus(self,num1,num2):
#         return num1 - num2
#     def multiply(self,num1,num2):
#         return num1 * num2
#     def divide(self,num1,num2):
#         if num2 != 0:
#             return num1 / num2
#         else:
#             return '除数不能为零'
# jisuanqi = calculator()
# print(jisuanqi.plus(5,6))
# print(jisuanqi.minus(7,8))
# print(jisuanqi.divide(6,3))
# print(jisuanqi.multiply(3,2))


# 10、创建一个名为Person的类，具有以下属性和方法：
# 属性：name（姓名），age（年龄）
# 方法：greet()，打印出一句问候语，包括该人的姓名和年龄
# class Person():
#     def __init__(self,name,age):
#         self.name = name
#         self.age = age
#     def greet(self):
#         print(f'hello,{self.name},{self.age}')
# say = Person('DKJF',90)
# say.greet()


# 11、定义一个图书管理系统类，图书可以新增、修改、删除，要求新增的每个图书都加到txt文本里，数据持久化
# 新增：图书名、作者名称、新建年月日
# 修改：图书名、作者名称、新建年月日
# 删除：图书删掉，且不在展示
# 查看：全量查询，精确查询，需要用户传入形参来控制返回结果


# 12、创建一个名为"Car"的类，该类具有"品牌"和"颜色"属性。创建一个"start_engine"方法，该方法打印出"启动汽车引擎！"的消息。
# 创建一个"stop_engine"方法，该方法打印出"关闭汽车引擎！"的消息
# class Car():
#     def __init__(self,brand,color):
#         self.brand = brand
#         self.color = color
#     def out(self):
#         print(f'品牌：{self.brand},颜色：{self.color}')
#     def start_engine(self):
#         print('启动汽车引擎')
#     def close_engine(self):
#         print('关闭汽车引擎')
# car = Car('玛莎','BLACK')
# car.out()
# car.start_engine()
# car.close_engine()

# 13、淘宝商家后台，可以上架商品、下架商品，功能如下：
#  （1） 可以添加商品，商家添加完的商品会存到商品列表
#  1.1  商品要有名称、sku、价格
#  （2） 可以修改商品信息：名称、sku、价格
#  （3） 可以对商品进行下架，下架后的商品不再展示


# 14、定义一个人类
# 1.舔狗沸羊羊和绿茶美羊羊都爱跑步
# 2.绿茶美羊羊体重45.0公斤
# 3.舔狗沸羊羊体重75.0公斤
# 4.每次跑步都会减少0.5公斤
# 5.每次吃东西都会增加1公斤
class Person():
    def __init__(self, a=75, b=45):
        self.a = a
        self.b = b

    def run(self, name):
        if name == '舔狗沸羊羊':
            self.a -= 0.5
            print(f'舔狗沸羊羊跑步 减少了{0.5}公斤')
            print(self.a)
        elif name == '美羊羊':
            self.b -= 0.5
            print(f'绿茶美羊羊跑步 减少了{0.5}公斤')
            print(self.b)

    def eat(self, name):
        if name == '舔狗沸羊羊':
            self.a += 1
            print(f'舔狗沸羊羊猪瘾犯了吃饭 增加了1公斤')
            print(self.a)
        elif name == '绿茶美羊羊':
            self.b += 1
            print(f'绿茶美羊羊茶艺见长 增加了1公斤')
            print(self.b)

person = Person()
person.run('舔狗沸羊羊')
person.run('绿茶美羊羊')
person.eat('绿茶美羊羊')
person.eat('舔狗沸羊羊')
person.eat('绿茶美羊羊')
person.eat('舔狗沸羊羊')
person.eat('绿茶美羊羊')
person.eat('舔狗沸羊羊')


# 15、士兵瑞恩有一把ak47
# 士兵可以开火（开火扣动的是扳机）
# 抢能够发射子弹（把子弹打出去）
# 抢能够装子弹–增加子弹数量
# 要求没子弹，需要输出没有子弹了，且发射失败
# class soldier()
#     def fire(self,bullet,):
#         self.bullet = bullet
#         if bullet> 30:
#             self.bullet -=1
#             print('开火')
#         else:
#             print('空枪换弹')
#     def load_bullets(self,count):
#         self.load_bullet = count
#         print(f'{count}颗子弹')
#
# class AK():
#     def fire(self,):
